home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / button12.lha / button9101.ps < prev    next >
Text File  |  1993-08-05  |  6KB  |  214 lines

  1. % button9101.ps - A GNU Button Program
  2. % Copyright 1991 Free Software Foundation
  3. % This program is free software; you can redistribute it and/or modify
  4. % it under the terms of the GNU General Public License as published by
  5. % the Free Software Foundation; either version 1, or (at your option)
  6. % any later version.
  7. %
  8. % This program is distributed in the hope that it will be useful,
  9. % but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11. % GNU General Public License for more details.
  12. %
  13. % You should have received a copy of the GNU General Public License
  14. % along with this program; if not, write to the Free Software
  15. % Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  16. % Hard copies of this button were first distributed at the January 1991
  17. % Dallas Usenix.  They had black lettering on a yellow background on a
  18. % standard 2 1/4" safety pin button.  They were designed by Leonard H.
  19. % Tower Jr. who is also the author of this GNU Button Program.
  20. % Report bugs or improvements to: tower@prep.ai.mit.edu
  21. % Hard copies of this button are probably still available.  To get a
  22. % button, one must have either donated source code or documentation to
  23. % the GNU Project or make a donation of at least $ 2.00 for each button.
  24. % If you wish a hard copy of a gnu button send:
  25. %     - a self-addressed, stamped envelope; and
  26. %     - either:
  27. %         - a reminder of your source or documentation contribution; or
  28. %         - a donation payable to the "Free Software Foundation"; and
  29. %     - specify which of these different versions you wish:
  30. %         Feb 88, Jun 88, Jan 89, Jun 89, Jan 90, Jun 90, and/or Jan 91
  31. % to:    L. Tower Jr.
  32. %     36 Porter Street,
  33. %    Somerville, MA  02143, USA
  34. % This program is available for anonymous ftp
  35. % prep.ai.mit.edu:/u2/emacs/button.N.MM.shar.  It is probably available
  36. % in other source archives.
  37.  
  38. %.so ehandler.ps
  39.  
  40. % Uses pathtext routine from Adobe Cookbook.
  41. .so pathtext.ps
  42.  
  43. % center button on 8 1/2" x 11" page
  44. 306 396 translate
  45.  
  46. % This is a kludge to give better edge resolution.
  47. % Note that postscript's scale command doesn't cut it.
  48. % It scales after the edges are set.
  49. % biggg is set to 2,3,4 or 3.9 to make a master that is that much larger.
  50. % The master is reduced that much by the button manufacturer.
  51. % If only 1200 dpi postscript printers were more common ...
  52. /biggg 1 def
  53.  
  54. % useful for centering things
  55. /circleguide {
  56.   gsave
  57.   /radius 82 biggg mul def
  58.   .5 setlinewidth
  59.   newpath
  60.     0 0 radius 0 360 arc
  61.   stroke
  62.   grestore
  63. } def
  64.  
  65. %circleguide
  66.  
  67. /setdimen {
  68.   /letsep exch biggg mul def    % half the width of a letter
  69.   /letrad exch biggg mul def
  70.   /letinside 18 biggg mul def    % vertical distance from center line to radius
  71.   /letheightlow letrad letinside add def
  72.   /letheight letheightlow linewidth 2 div add def
  73.   /letwidth letrad 2 mul def
  74. } def
  75.  
  76. /g_path {
  77.     newpath
  78.     gxcenter letinside     letrad 0 180 arc
  79.     gxcenter letinside neg letrad 180 0 arc
  80.     0 letinside 3 div rlineto
  81.     13.7 neg biggg mul 0 rlineto
  82. } def
  83.  
  84. /u_path {
  85.   newpath
  86.   /nxcenter gxcenter neg def
  87.   /nleft  nxcenter letrad neg add def
  88.   /nright nxcenter letrad     add def
  89.   nleft letheight moveto
  90.   nxcenter letinside neg letrad 180 0 arc
  91.   nright letheight lineto
  92. } def
  93.  
  94. /center_dim { 16 16 setdimen } def
  95.  
  96. /outside_dim { 15.5 16.5 setdimen } def
  97.  
  98. /inside_dim { 16.5 15.5 setdimen } def
  99.  
  100. gsave
  101.   % define the basic dimensions of the letters
  102.   % people are welcome to call this typeface:    austere gothic
  103.   /linewidth 11 biggg mul def
  104.  
  105.   /Helvetica-Narrow-Bold findfont 6 biggg mul scalefont setfont
  106.   linewidth setlinewidth
  107.   0 setlinejoin
  108.   0 setlinecap
  109.  
  110. % give us a G !
  111.     0 setgray
  112.     center_dim
  113.     /gxcenter letrad 2 mul letsep add neg def
  114.     g_path
  115.     stroke
  116.  
  117.     1 setgray
  118.     outside_dim
  119.     g_path
  120.     ( 675 MASSACHUSETTS AVE, CAMBRIDGE, MA 02139 USA)
  121.     0 pathtext
  122.  
  123.     inside_dim
  124.     g_path
  125.     reversepath
  126.     (THANXGNU!!  COPYRIGHT 1991  FREE  SOFTWARE  FOUNDATION)
  127.     0 pathtext
  128.  
  129. % give us a N !
  130.     0 setgray
  131.     center_dim
  132.     newpath
  133.     letrad neg     letheight     neg    moveto
  134.     letrad neg    letheightlow        lineto
  135.     letrad    letheightlow    neg     lineto
  136.     letrad    letheight        lineto
  137.     stroke
  138.  
  139.     1 setgray
  140.     newpath
  141.     /bla .5 biggg mul def    % amount to move baseline by
  142.     /nadj bla 1.2 mul biggg mul def    % amount to adjust diagonal of the n
  143.     letrad bla add neg     letheight     neg    moveto
  144.     letrad bla add neg    letheightlow nadj add    lineto
  145.     letrad bla sub    letheightlow nadj sub neg     lineto
  146.     letrad bla sub    letheight        lineto
  147.     % This is a kludge to make the slashes bolder
  148.     /slashwidthadj (/) stringwidth pop    % don't need y
  149.     4.1 div def
  150.     gsave
  151.     ( FROM  PREP.AI.MIT.EDU  FILE   /)
  152.     0 pathtext
  153.     grestore
  154.     gsave
  155.     (/pub/)
  156.     ( FROM  PREP.AI.MIT.EDU  FILE   /) stringwidth pop    % don't need y
  157.         slashwidthadj 3.4 mul sub
  158.     pathtext
  159.     grestore
  160.     gsave
  161.     (/gnu/)
  162.     ( FROM  PREP.AI.MIT.EDU  FILE   /pub/) stringwidth pop    % don't need y
  163.         slashwidthadj 4.2 mul sub
  164.     pathtext
  165.     grestore
  166.     gsave
  167.     % extra space is to turn the tight bend in the N.
  168.     (/button.N.MM.shar.                          GNU'S NOT UNIX!)
  169.         ( FROM  PREP.AI.MIT.EDU  FILE   /pub/gnu/) stringwidth pop % don't need y
  170.                 slashwidthadj 5.2 mul sub
  171.     pathtext
  172.     grestore
  173.  
  174.     newpath
  175.     letrad bla sub neg     letheight     neg    moveto
  176.     letrad bla sub neg    letheightlow nadj sub    lineto
  177.     letrad bla add    letheightlow nadj add neg     lineto
  178.     letrad bla add    letheight        lineto
  179.     reversepath
  180.     % extra space is to turn the tight bend in the N.
  181.     ( YOU MAY ANONYMOUS FTP          THIS  BUTTON'S                             POSTSCRIPT PROGRAM)
  182.         0 pathtext
  183.  
  184. % give us a U !
  185.     0 setgray
  186.     center_dim
  187.     /gxcenter letrad 2 mul letsep add neg def
  188.     u_path
  189.     stroke
  190.     1 setgray
  191.  
  192.     outside_dim
  193.     u_path
  194.     ( UNDER  THE  TERMS  OF  THE   GNU  GENERAL  PUBLIC  LICENSE.)
  195.     0 pathtext
  196.  
  197.     inside_dim
  198.     u_path
  199.     reversepath
  200.     ( THIS   GNU   BUTTON   DESIGN  MAY  BE   FREELY   REDISTRIBUTED)
  201.     0 pathtext
  202.  
  203. % what does it spell?!?  GNU  !!
  204. grestore
  205. showpage
  206.